iT邦幫忙

2024 iThome 鐵人賽

DAY 10
2
Software Development

Laravel 隨筆學習札記系列 第 10

Day10 - Laravel Database: Seeding,打造小鎮書店的秘訣

  • 分享至 

  • xImage
  •  

好唷!來說說小鎮上精靈們的書店草創時期小故事 - 第 1 篇~~~~😊

在魔法的小鎮上,這群可愛的小精靈,他們決定開一家書店,讓小鎮的居民都能享受閱讀的樂趣。然而,開店的過程中,他們遇到了不少困難~


第一個挑戰:填充書店的書籍資料

小精靈們熱情洋溢地開始規劃他們的書店。面臨的第一個挑戰是要填充書店的書籍資料。精靈們希望每本書都有獨特的故事和角色,但小精靈們的書庫(資料庫)卻空空如也。

為了解決這個問題,小精靈們決定使用一個名叫「Seeder」的魔法。他們記得從老書中學到的,這種魔法可以快速生成書籍資料。


Database: Seeding

首先,小精靈們創建了一個名為 BookSeeder 的魔法器具,這個器具能夠在書店的資料庫中插入書籍資訊。他們開始編輯這個器具,決定放入一些熱門書籍的資料。

要使用 BookSeeder 的魔法器具,需要先使用 Artisan 命令 中的 make:seeder 小魔法

產生的魔法器具會儲放在 database/seeders 目錄中

php artisan make:seeder BookSeeder

可以看到在檔案中有預設一個方法:run ,當執行 Artisan 命令 中的 db:seed  時就會呼叫此方法

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\\DB;

class BookSeeder extends Seeder
{
    public function run()
    {
        DB::table('books')->insert([
            ['title' => '魔法之書', 'author' => '艾莉絲', 'genre' => '魔法'],
            ['title' => '冒險之旅', 'author' => '巴比', 'genre' => '冒險'],
        ]);
    }
}

然後,小精靈們新增完 run 方法的內容後,用魔法執行了 db:seed ,將資料填入資料庫中:

# 我們可以指定要單獨運行的特定 seeder 類
php artisan db:seed --class=BookSeeder 

# 運行全部
php artisan db:seed

當書籍資料終於填充完畢後,小精靈們歡呼雀躍,書店的書架上開始有了各式各樣的書籍。


Calling Additional Seeders (調用其他 Seeders)

但小精靈想說也有些評論想要來填充進去資料庫,內容看起來可以更豐富

可以使用 call 方法來執行其他 seeder 類。使用 call 方法可以將資料庫種子劃分為多個文件,這樣就不會有單個 seeder 類變得太大。

/**
 * Run the database seeders.
 */
public function run(): void
{
    $this->call([
        BookSeeder::class, // 新增書籍資料
        CommentSeeder::class // 新增評論資料 
    ]);
}

下一個挑戰:如何保持書籍資料的多樣性,需要更多的書籍

明天再來聊聊小精靈如何克服下一個挑戰唷!


參考資料

  1. Laravl官方網站 - Database: Seeding
  2. Create DB Seeder in Laravel

踏著身心靈的塔羅腳步,轉向技術與邏輯的工程師之路,就藉由塔羅日抽來紀錄今日的學習與生活吧!

權杖騎士:保持熱情,勇往直前,著滿滿的能量與活力!

Nothing is as important as passion. No matter what you want to do with your life, be passionate.

沒有什麼比熱情更為珍貴,無論你想要在生命中追求什麼,都要全心投入,懷抱熱情。

— Jon Bon Jovi


上一篇
Day9 - Database Index的魔力:讓數據管理更簡單
下一篇
Day11 - 小精靈的書店奇蹟:用 factory 魔法擴充藏書
系列文
Laravel 隨筆學習札記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
橘子
iT邦新手 4 級 ‧ 2024-09-24 11:52:58

小精靈感覺好可愛(*´д`)~♥

fufu04 iT邦新手 5 級 ‧ 2024-09-25 13:04:29 檢舉

我這樣比較能理解哈哈協槓說故事阿姨XD

我要留言

立即登入留言